<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body {
            background: #000;
        }

        .cards {
            display: grid;
            grid-template-columns: repeat(9, 1fr);
            row-gap: 10px;
            overflow: hidden;
        }

        .card {
            width: 200px;
            height: 200px;
            background: rgba(255, 255, 255, 0.1);
            border-radius: 5px;
            position: relative;
            text-align: center;
            color: #fff;
            line-height: 200px;
            overflow: hidden;
            --x: 10000px;
            --y: 10000px;
        }

        .card::before {
            content: "123454554";
            position: absolute;
            inset: 2px;
            background: #222;
            border-radius: inherit;
            z-index: 99;
        }

        .card::after {
            content: "";
            position: absolute;
            inset: 0;
            background: radial-gradient(closest-side circle, rgba(246, 0, 0, 0.55), transparent);
            transform: translate(var(--x), var(--y));
        }

    </style>
</head>
<body>
<div class="cards">
    <div class="card"></div>
    <div class="card"></div>
    <div class="card"></div>
</div>

<script src="https://www.jq22.com/demo/jQuery-jSlider20160302/javascripts/jquery-1.4.2.js"></script>
<script>
    const cards = $(".card")
    let t
    document.addEventListener('mousemove', function (e) {
        cards.each(function (i) {
            let rect = cards[i].getBoundingClientRect()
            console.log( rect.top)
            let x = e.clientX - rect.left - rect.width / 2
            let y = e.clientY - rect.top - rect.height / 2

            cards[i].style.setProperty('--x', x + 'px')
            cards[i].style.setProperty('--y', y + 'px')
        })
    })
</script>
</body>
</html>